/*
 * DocumentoComparator.java
 *
 * Created on September 6, 2007, 9:25 AM
 *
 * To change this template, choose Tools | Options and locate the template under
 * the Source Creation and Management node. Right-click the template and choose
 * Open. You can then make changes to the template in the Source Editor.
 */

package com.src.computec.facturacion.utilidades;

import com.src.computec.radar.services.utilities.dto.DocumentoDto;
import com.sun.org.apache.bcel.internal.generic.INSTANCEOF;
import java.util.Arrays;
import java.util.List;



/**
 *
 * @author fsanchez
 */
public class DocumentoComparator extends DocumentoDto implements Comparable{
    
    
    private String numeroOrdenProceso;
    private String razonSocialCliente;
    private String descProducto;
    private long numDocumento;
    
    public DocumentoComparator(){
	super();
    }
    
     
    public int compareTo( Object obj){
	final int BEFORE = -1;
	final int EQUAL = 0;
	final int AFTER = 1;
	
	if( !(obj instanceof DocumentoComparator) ){
	    throw new ClassCastException("Instancia de DocumentoComparator esperado");
	}
	
	//int numeroDocumento=Integer.parseInt(this.getNumeroDocumento());
	long otroNumDocumento=((DocumentoComparator)obj).getNumDocumento();
	long numDoc_=this.numDocumento-otroNumDocumento;
	
	int numeroOrden=Integer.parseInt(this.getNumeroOrdenProceso());
	int otroNumeroOrden=Integer.parseInt(((DocumentoComparator)obj).getNumeroOrdenProceso());
	int numOrden_=numeroOrden-otroNumeroOrden;
	int returnValue=0;
	if(numOrden_>0 ){
	    returnValue=AFTER;
	}else if(numOrden_==0 && numDoc_>0){
	    returnValue= AFTER;
	}else if(numOrden_==0 && numDoc_==0){
	    returnValue= EQUAL;
	}else if(numOrden_==0 && numDoc_<0){
	    returnValue= BEFORE;
	}else if(numOrden_<0 ){
	    returnValue= BEFORE;
	}
	return returnValue;
    }
     
    public String getNumeroOrdenProceso() {
        return numeroOrdenProceso;
    }

    public void setNumeroOrdenProceso(String numeroOrdenProceso) {
        this.numeroOrdenProceso = numeroOrdenProceso;
    }

    public String getRazonSocialCliente() {
        return razonSocialCliente;
    }

    public void setRazonSocialCliente(String razonSocialCliente) {
        this.razonSocialCliente = razonSocialCliente;
    }

    public String getDescProducto() {
        return descProducto;
    }

    public void setDescProducto(String descProducto) {
        this.descProducto = descProducto;
    }

    public long getNumDocumento() {
        return numDocumento;
    }

    public void setNumDocumento(long numDocumento) {
        this.numDocumento = numDocumento;
    }
    
    
    public void setNumeroDocumento(String numeroDocumento){
	super.setNumeroDocumento(numeroDocumento);
	
	
//	String[] charArray_={"0","1","2","3","4","5","6","7","8","9"};
//	
//	
//	int first=-1;
//	
//	for(int k=0;k<charArray_.length;k++){
//	    int ocurr_=numeroDocumento.indexOf(charArray_[k]);
//	    if(ocurr_>=0 && ocurr_<first){
//		first=ocurr_;
//	    }
//	    if(first==-1 && ocurr_>=0){
//		first=ocurr_;
//	    }
//	}
	
	
	
	try{
	    numDocumento=Long.valueOf(numeroDocumento).longValue();
	}catch(NumberFormatException nex){
	    
	
	    
	    int last=-1;
	    for(int k=0;k<48;k++){
		//0=48 9=57 Z=90 a=97
		char c=(char)k;
		int ocurr_=numeroDocumento.lastIndexOf(c);
		if(ocurr_>=0 && ocurr_>last){
		    last=ocurr_;
		}

	    }

	    for(int k=58;k<255;k++){
		//0=48 9=57 Z=90 a=97
		char c=(char)k;
		int ocurr_=numeroDocumento.lastIndexOf(c);
		if(ocurr_>=0 && ocurr_>last){
		    last=ocurr_;
		}
	    }
	
	
	
	    
	 
	    try{
//		if(firstOcurrence>-1){
//		    this.numDocumento=Long.parseLong(numeroDocumento.substring(firstOcurrence, numeroDocumento.length()));
//		}else{		
//		    this.numDocumento=0;
//		}
		
//		WC
//		if(first>-1){
//		    this.numDocumento=Long.parseLong(numeroDocumento.substring(first, numeroDocumento.length()));
//		}else{		
//		    this.numDocumento=0;
//		}
		
		if(last>-1 && last<numeroDocumento.length()){
		    this.numDocumento=Long.parseLong(numeroDocumento.substring(last+1, numeroDocumento.length()));
		   // System.out.println("numDOC:"+this.numDocumento);
		}else{		
		    this.numDocumento=0;
		    //System.out.println("*****************numDOC:"+numeroDocumento);
		}
		
		
	    }catch(NumberFormatException n){
		n.printStackTrace();
		this.numDocumento=0;
	    }catch(Exception ex){
		ex.printStackTrace();
	    }
	}
    }
    
}
